<html>
<head>
<title>G32Version</title>
<link rel="stylesheet" href="../../../../../styles/default.css" type="text/css">
<meta name="Ancestor" content="TClipperBase">
</head>
<body bgcolor="#FFFFFF">
<br>

<p class="Body">The <b>TClipper</b> object is used to perform boolean 'clipping' operations  (intersection, union, difference and xor) on polygons.  There are no restrictions on either the number nor the type of polygon that can be clipped. Polygons can have holes, be self-intersecting and even have coincident edges.</p><br>

<table border="0"><tr>
<th>Example</th>
</tr><tr><td><pre class="brush: delphi;">
uses GR32, GR32_Clipper;
	...
	var
	  i: integer;
	  subj, clip, solution: TArrayOfArrayOfFloatPoint;
	begin
	  setlength(subj, 2);
	  setlength(subj[0], 4);
	  subj[0][0] := FloatPoint(180,200);
	  subj[0][1] := FloatPoint(260,200);
	  subj[0][2] := FloatPoint(260,150);
	  subj[0][3] := FloatPoint(180,150);
	  
	  setlength(subj[1], 3);
	  subj[1][0] := FloatPoint(215,160);
	  subj[1][1] := FloatPoint(230,190);
	  subj[1][2] := FloatPoint(200,190);

	  setlength(clip, 1);
	  setlength(clip[0], 4);
	  clip[0][0] := FloatPoint(190,210);
	  clip[0][1] := FloatPoint(240,210);
	  clip[0][2] := FloatPoint(240,130);
	  clip[0][3] := FloatPoint(190,130);
	  
	  with TClipper.Create do
	  try
	    Add(subj, ptSubject);
	    Add(clip, ptClip);
	    Execute(ctIntersection, solution, pftNonZero, pftNonZero);
	  finally
	    free;
	  end;
	  
	  //nb: DrawPolygons is a stub for your own polygon rendering code.
	  DrawPolygons(subj, $160000FF, $600000FF);
	  DrawPolygons(clip, $20FFFF00, $30FF0000);
	  DrawPolygons(solution, $3000FF00, $FF006600);</pre></td></tr></table>

<a href="./Methods/Execute.htm" id="hidden"></a>

</body>
</html>